home *** CD-ROM | disk | FTP | other *** search
/ NetNews Offline 2 / NetNews Offline Volume 2.iso / news / comp / sys / m68k / 196 < prev    next >
Encoding:
Internet Message Format  |  1996-08-05  |  1.8 KB

  1. Path: tank.news.pipex.net!pipex!demon!fpfnet.demon.co.uk
  2. From: rcc@fpfnet.demon.co.uk (Robert Cragie)
  3. Newsgroups: comp.sys.m68k
  4. Subject: Re: Bus Error Handler for 68040
  5. Date: Thu, 01 Feb 1996 22:12:26 GMT
  6. Organization: FPF Ltd.
  7. Message-ID: <823212746.11237@fpfnet.demon.co.uk>
  8. References: <30FFE81F.4110@infinet.com>
  9. NNTP-Posting-Host: fpfnet.demon.co.uk
  10. X-NNTP-Posting-Host: fpfnet.demon.co.uk
  11. X-Newsreader: Forte Free Agent 1.0.82
  12.  
  13. Paul Swetnam <pswetnam@infinet.com> wrote:
  14.  
  15. >I am having difficulty writing a bus error handler for a 68040 processor 
  16. >because of the pipeline architecture used by the processor. The bus 
  17. >errors are trapped by my routine, but when I execute an RTE instruction 
  18. >to return from the exception, the processor often tries to re-run the bus 
  19. >access and re-triggers the same error. This results in an infinite loop.
  20.  
  21. Sometime ago, I wrote a bus error handler for the 68EC030, which may
  22. well be similar. I tried using the stack fiddling technique (OK on
  23. 68000), but it didn't work. Browsing the data book revealed that the
  24. DF (Data Fault re-run) bit of the stacked SSW (Special Statue Word)
  25. has to be cleared before doing the RTE. The following bit of code
  26. worked OK. It assumed that d2 was set to a 'magic' value before
  27. attempting a 'wary' access to detect possibly legitimate bus errors
  28. due to non-existent VME boards for example.
  29.  
  30. Buserr        cmpi.l    #MAGIC_MASK,d2
  31.         beq.s    BE_legit
  32.  
  33. * Bus error was not legitimate, so report error and bomb out.
  34.  
  35.         jmp    _bus_err
  36.  
  37. * Legitimate bus error.  Clear the DF (Data fault re-run) bit in the
  38. SSW
  39. * (Special Status Word) stored on the stack frame by the bus error.
  40. This
  41. * is horrendously complicated - refer to the 68EC030 User's Manual for
  42. a
  43. * full description of bus error handling.
  44.  
  45. BE_legit        bclr.b    #0,(10,sp)        ; Reset the DF bit in SSW
  46.         moveq    #-1,d2            ; Indicate bus error in d2
  47.         rte
  48.  
  49.  
  50.  
  51.